﻿using System;
using System.Collections.Generic;
using System.Text;

namespace WodLib
{
    [Serializable()]
    public class Mage : Human
    {
        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public int Mana
        {
            get;
            set;
        }

        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public int ManaPerTurn
        {
            get
            {
                if (this.Gnosis <= 8)
                {
                    return this.Gnosis;
                }
                else
                {
                    if (this.Gnosis == 9)
                    {
                        return 10;
                    }
                    else // Gnosis == 10
                    {
                        return 15;
                    }
                }
            }
        }
       
        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public int MaxMana
        {
            get
            {
                if (this.Gnosis <= 6)
                {
                    return this.Gnosis + 10 - 1;
                }
                else
                {
                    switch (this.Gnosis)
                    {
                        case 7:
                            return 20;
                        case 8:
                            return 30;
                        case 9:
                            return 50;
                        case 10:
                            return 100;
                        default:
                            return 0;
                    }
                }
            }
        }

        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public int ParadoxModifier { get; set; }

        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public int ParadoxDicePool{ get; set; }

        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public MageArcana Arcana
        {
            get;
            set;
        }

        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public List<MageRote> Rotes
        {
            get;
            set;
        }

        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public int ArcaneExperience
        {
            get;
            set;
        }

        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public string FamiliarName { get; set; }

        [System.ComponentModel.Category(Config.DescriptionConsts.MageTraits)]
        public int Gnosis
        {
            get;
            set;
        }

        public Mage()
            : base()
        {
            Rotes = new List<MageRote>();
            Arcana = new MageArcana();
        }
    }
}
